#include <ros/ros.h>
#include <tf/transform_listener.h>  // tf的头文件

int main(int argc, char **argv) {
    ros::init(argc, argv, "cre_tf_listener");  // 初始化ROS节点
    ros::NodeHandle node;  // 创建ROS节点句柄

    tf::TransformListener listener;  // 创建Transform监听器
    ros::Rate rate(10.0);  // 设置循环频率为10Hz
    while (node.ok()) {  // 循环直到ROS节点停止
        // 创建StampedTransform对象，用于存储变换信息
        tf::StampedTransform transform;
        try {
            listener.lookupTransform("map", "base_link", ros::Time(0), transform);  // 获取base_link在map坐标系下的变换
        }
        catch (tf::TransformException ex) {  // 如果获取变换失败，打印错误信息ROS_ERROR("%s",ex.what());
            ros::Duration(1.0).sleep();  // 等待1秒再继续continue;
        }
        // 打印base_link在map坐标系下的位姿信息
        ROS_INFO("Base link in map coordinate system: ox = %f, oy = %f, oz = %f, rx = %f, ry = %f, rz = %f, rw = %f",
                 transform.getOrigin().x(), transform.getOrigin().y(), transform.getOrigin().z(),
                 transform.getRotation().getX(), transform.getRotation().getY(),
                 transform.getRotation().getZ(), transform.getRotation().getW());

        rate.sleep();  // 等待一段时间，以满足循环频率
    }
    return 0;  // 程序结束
}
